#include<iostream>
#include<cstring>

using namespace std ;

//地址要比原来的大两三倍
const int maxn = 200003 , null = 0x3f3f3f3f;    //空指针用一个不存在的数表示 比如 -1

int h[maxn];

//查找，找到了的话返回的是他实际存储的位置而不是他应该存储的位置
int find(int x) {
    int k = (x % maxn + maxn) % maxn ; //计算哈希值

    while(h[k] != null && h[k] != x ){  //如果当前位置不为空并且 x 不等于这个值就继续往下找
        k ++ ;
        if(k == maxn) {     //k走到最后要回到第一个位置
            k = 0;
        }
    }
    //两种含义：1.如果找到了，那返回的就是 x 的下标，如果没找到 ，返回的就是 x 应该插入的位置
    return k ;
}

int main() {
    int n ;
    scanf("%d" , &n) ;

    memset(h , 0x3f , sizeof h) ; //每一项都初始化成一个不在范围内的数

    while(n --) {
        char op[2];
        int x ;
        scanf("%s%d" , op , &x) ;
        int k = find(x);    //k要么存的是 x 的下标， 要么就是 x 应该存的位置
        if(op[0] == 'I'){
            h[k] = x ;
        } else {
            if(h[k] != null) {
                puts("Yes");
            }else{
                puts("No");
            }
        }
    }
}